package net.jumpengine.inter;

import javafx.scene.input.MouseButton;

/**
 * 鼠标事件处理接口<br>
 * 用Manager.getEventManager().addMouseEvent(Enum&lt;?&gt;,IMouseEvent)添加游戏状态对应的鼠标处理事件
 * <br /><br />
 * <b>作者:&nbsp;</b>张天文 <br />
 * <b>日期:&nbsp;</b>2020年2月29日 下午10:03:41<br />
 * @date
 */
public interface IMouseEvent {
	/**
	 * 点击事件,当在IControl子类上点击时,直接触发IControl.getAction().handle(...),不再触发此方法
	 * @param x 点击时的x坐标
	 * @param y 点击时的y坐标
	 * @param button 鼠标按键
	 */
	void click(int x,int y,MouseButton button);
	/**
	 * 鼠标按键按下事件
	 * @param x 点击时的x坐标
	 * @param y 点击时的y坐标
	 * @param button 鼠标按键
	 */
	void mousePressed(int x,int y,MouseButton button);
	/**
	 * 鼠标按键释放事件<br>
     *不用click方法而用此方法的话,可以给玩家反悔的机会,按住按键,挪开,就不会触发
	 * @param x 点击时的x坐标
	 * @param y 点击时的y坐标
	 * @param button 鼠标按键
	 */
	void mouseReleased(int x,int y,MouseButton button);
	/**
	 * 鼠标移动事件,当在IControl子类移动时,触发其setMouseStat(...)事件,同时触发此方法
	 * @param x 点击时的x坐标
	 * @param y 点击时的y坐标
	 * @param button 鼠标按键
	 */
	void mouseMove(int x,int y,MouseButton button);
	
	void setFocus(IControl control);
	IControl getFocus();
}
